package com.example.hyg_veintype.utils.chartUtil;

import android.graphics.Color;

import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;

import java.util.ArrayList;
import java.util.List;

import lombok.Data;

import static com.example.hyg_veintype.utils.chartUtil.RealTimeChartUtils.YMAX;
import static com.example.hyg_veintype.utils.chartUtil.RealTimeChartUtils.YMIN;


/**
 * @author: yyw
 * time: 2020/12/1 16:44
 * desc: 图表工具类（根据张帅SO文件返回的分析数据绘制）
 */
public class AnalyseChartUtils {
    /**
     * 图表数据填充（内部private方式实现chart图表配置）
     *
     * @param chart 图表控件
     * @param data  数据
     */
    public static void setData(LineChart chart, List<MyPoint> data, int maxX, int maxY) {
        if (data == null || data.isEmpty()) {
            return;
        }
        chart.removeAllViews();
        ArrayList<Entry> values = new ArrayList<>();
        for (int i = 0; i < data.size(); i++) {
            values.add(new Entry((float) data.get(i).getX(), (float) data.get(i).getY()));
        }
        //创建图表数据
        LineDataSet set1 = new LineDataSet(values, "");
        //折线样式
        set1.setColor(Color.GRAY);
        set1.setLineWidth(1f);
        set1.setDrawValues(false);
        set1.setDrawCircles(false);
        //折线样式(LINEAR,STEPPED,CUBIC_BEZIER,HORIZONTAL_BEZIER)
//        set1.setMode(LineDataSet.Mode.HORIZONTAL_BEZIER);
        set1.setMode(LineDataSet.Mode.CUBIC_BEZIER);
        setupChart(chart, new LineData(set1), maxX, maxY);
    }

    private static void setupChart(LineChart chart, LineData data, int maxX, int maxY) {
        //禁用描述文字
        chart.getDescription().setEnabled(false);
        //禁用网格背景
        chart.setDrawGridBackground(false);
        chart.setTouchEnabled(false);
        chart.setDragEnabled(false);
        chart.setScaleEnabled(false);
        chart.setBackgroundColor(Color.parseColor("#F5F5F5"));
        //设置图表与背景的外边距
//        chart.setViewPortOffsets(40, 20, 40, 20);
        chart.setViewPortOffsets(0, 0, 0, 0);
        //图表添加数据
        chart.setData(data);
        //获取图例
        Legend l = chart.getLegend();
        l.setEnabled(false);
        chart.getAxisLeft().setEnabled(false);
        //设置最大值与坐标最大值、最小值与坐标最小值的距离
        chart.getAxisLeft().setSpaceTop(0);
        chart.getAxisLeft().setSpaceBottom(0);
        chart.getAxisRight().setEnabled(false);
        chart.getXAxis().setEnabled(false);

        // Y轴范围控制
        chart.getAxisLeft().setAxisMinimum(0);
        chart.getAxisLeft().setAxisMaximum(maxY+5);
        //X轴范围控制
        chart.setVisibleXRangeMaximum(maxX);
    }

    @Data
    public static class MyPoint {
        private double x;
        private double y;

        public MyPoint(double x, double y) {
            this.x = x;
            this.y = y;
        }
    }
}
